The term application is a shorter form of application program. An application program is a program designed to perform a specific function directly for the user or, in some cases, for another application program. Examples of applications include word processors, database programs, Web browsers, development tools, drawing, paint, image editing programs, and communication programs. Applications use the services of the computer's operating system and other supporting applications. The formal requests and means of communicating with other programs that an application program uses is called the application program interface (API).
In computing, a program is a specific set of ordered operations for a computer to perform. In the modem computer that John von Neumann outlined in 1945, the program contains a one-at-a-time sequence of instructions that the computer follows. Typically, the program is put into a storage area accessible to the computer. The computer gets one instruction and performs it and then gets the next instruction. The storage area or memory can also contain the data that the instruction operates on. (Note that a program is also a special kind of “data” that tells how to operate on “application or user data.”)
Programs can be characterized as interactive or batch in terms of what drives them and how continuously they run. An interactive program receives data from an interactive user (or possibly from another program). A batch program runs and does its work, and then stops. Batch programs can be started by interactive users who request their interactive program to run the batch program. A command interpreter or a Web browser is an example of an interactive program. A program that computes and prints out a company payroll is an example of a batch program. Print jobs are also batch programs.
When a program is created, it is written using some kind of computer language. The language statements are the source program. The developer then “compiles” the source program (with a special program called a language compiler) and the result is called an object program (not to be confused with object-oriented programming). There are several synonyms for object program, including object module and compiled program. The object program contains the string of 0s and 1s called machine language that the logic processor works with. The machine language of the computer is constructed by the language compiler with an understanding of the computer's logic architecture, including the set of possible computer instructions and the length (number of bits) in an instruction.
From the above, it should be apparent that it takes weeks to create an application, even for a skilled programmer. Consider the following example. Company A want to develop an enterprise travel application. The application is to be constantly running, monitoring a human resources database for details on when executives are traveling, then going into a travel site (such as Travelocity.com, etc.) and checking flight times, checking confirmations, etc. The application is also to access a rental car site and make reservations. Upon completing the aforementioned tasks, the application is to allow each employee to check the status of his or her itinerary. The application is also to send alerts to the manager and/or administrative assistant of the employee regarding the travel arrangements.
To create such an application, a developer has to program the application to access several types of databases and gather data, process the data, and send the processed data out to potentially several types of devices (PC, phone, PDA, Blackberry, etc.). One skilled in the art will appreciate the time that must be spent when writing the code for such an application, ensuring that all API's are properly coded to, etc.
What is needed is a method of creating an application quickly and efficiently without requiring the typical weeks and months of coding and debugging.
Another problem inherent in the prior art is that most applications are created for the desktop. In an enterprise situation, a client-server implementation is most typical. However, only one client can interact with a particular session of the software. As modern businesses expand, they will grow to rely on enterprise-wide applications. Thus, pervasive computing will become the rule.
What is needed is a way to provide pervasive (vs. desktop) applications that are accessible throughout an enterprise on various types of devices and via multiple modes of connection.
Web services (sometimes called application services) are services (usually including some combination of programming and data, but possibly including human resources as well) that are made available from a business's Web server for Web users or other Web-connected programs. Providers of Web services are generally known as application service providers. Web services range from such major services as storage management and customer relationship management (CRM) down to much more limited services such as the furnishing of a stock quote and the checking of bids for an auction item. The accelerating creation and availability of these services is a major Web trend.
Users can access some Web services through a peer-to-peer arrangement rather than by going to a central server. Some services can communicate with other services and this exchange of procedures and data is generally enabled by a class of software known as middleware. Services previously possible only with the older standardized service known as Electronic Data Interchange (EDI) increasingly are likely to become Web services. Besides the standardization and wide availability to users and businesses of the Internet itself, Web services are also increasingly enabled by the use of the Extensible Markup Language (XML) as a means of standardizing data formats and exchanging data. XML is the foundation for the Web Services Description Language (WSDL).
Several companies provide the building blocks for creating Web services. However, one problem inherent in creating Web services is that a developer is limited by the number of building blocks he or she has access to. In other words, the developer has a “fixed menu” of building blocks, and must write code for any additional functionality desired.
What is needed is a methodology for reusing exiting functionality rather than having to create custom applications for each desired function. Such a methodology would allow companies to leverage existing infrastructure, thereby saving money.